<?php

class Premio{
	
	public static function getPremio($id_cupom){
		
		$db = $GLOBALS['connectionDefault'];
		
		$db->query(sprintf('
		SELECT p.id_parceiro, p.id_area
		FROM cupom AS c
		INNER JOIN cupom_lote AS l
				ON l.id_cupom_lote  = c.id_cupom_lote
		INNER JOIN parceiro AS p
		        ON p.id_parceiro = l.id_parceiro
		WHERE c.id_cupom = %s
		', $id_cupom));
		
		$rec = $db->next();
		
		$id_parceiro = $rec['id_parceiro'];
		$id_area = $rec['id_area'];
		
		$db->query(sprintf('
		SELECT p.id_premio
		FROM premio AS p
		INNER JOIN parceiro AS par
		        ON par.id_parceiro = p.id_parceiro
		WHERE p.disponivel = 1 AND 
		      quantidade_restante > 0 AND 
			  data_inicio_distribuicao <= now() AND
			  data_fim_distribuicao >= now() AND
			  (par.id_parceiro = %s || par.id_area != %s)
		', $id_parceiro, $id_area));
		
		while($db->next()){
			
			$premiosDisponiveis[] = $db->rec['id_premio'];
		}
		
		if(is_array($premiosDisponiveis)){
			
			shuffle($premiosDisponiveis);
			$idPremioSorteado = $premiosDisponiveis[rand(0, count($premiosDisponiveis)-1)];
			
			Premio::atualizaEstoquePremio($idPremioSorteado);
		}
		
		return $idPremioSorteado;
	}
	
	private static function atualizaEstoquePremio($id_premio){
		
		$db = $GLOBALS['connectionDefault'];
		
		$db->query(sprintf('
		UPDATE premio SET quantidade_restante = quantidade_restante - 1 WHERE id_premio = %s
		', $id_premio));
	}
}